Current high speed serial links may be digitally transmitted on a bit level, and can utilize a “8b/10b” symbol encoding format (8 bits of data being transmitted as a 10 bit symbol). Symbols can be used, for instance, to transfer data associated with video pixels. If a primary color (such as red, green, or blue) is encoded with a pixel color width of 8 bits, (i.e., each color has 28 bits=256 variations in intensity), there can be 2563 color (16,777,216) color variations when the three primary colors are mixed.
However, video pixels for a given color are not always formatted in a standard 8 video bits per color. For instance, video pixel formats for various colors can be in 10 bit per color, 12 bits per color, or other sizes. For pixel widths other than 24 bits, 8 bits per color (i.e., 3 bytes of 8, one byte of pixel information per primary color) this can create complications.
For instance, in a first case, for pixel color widths other than 8 bits, pixel data is forced into an 8 bit symbol encoding format by wasting bits. For instance, a 12 bit per color format can be characterized as 2 8 bit symbols, wasting 4 bits. This is typically done so that a symbol clock maintains an integer relationship to a pixel clock. However, wasting bits is inefficient and may lead to higher complexity an power.
Alternatively, in a second case, no bits are wasted when converting pixel data into a symbol by fully packing the data into 8 bit symbols, which causes a symbol clock not to have an integer relationship with the pixel clock. A transmitter of the symbol can not use a pixel clock as the symbol clock, which forces the use of more complex circuits to derive a symbol clock pulse for conveying the symbol. Furthermore, a “sink” (i.e., to where the symbol is conveyed), can not directly recover the pixel clock from a receive symbols by a simple “divide” function.